package com.xueyi.aixihu.controller;

import com.xueyi.aixihu.controller.base.BaseController;
import com.xueyi.aixihu.entity.po.DtUsers;
import com.xueyi.aixihu.entity.vo.*;
import com.xueyi.aixihu.reqeust.*;
import com.xueyi.aixihu.reqeust.base.PageLimitReq;
import com.xueyi.aixihu.response.DtUsersLoginResponse;
import com.xueyi.aixihu.response.DtUsersResponse;
import com.xueyi.aixihu.response.base.BaseResponse;
import com.xueyi.aixihu.service.DtUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;

/**
 * @author lvyi
 * @date : 2022/8/16
 * @Description : 后台用户表的controller类
 */
@RestController
public class DtUsersController extends BaseController {

    @Autowired
    private DtUsersService dtUsersService;

    /**
     * 分页条件
     */
    private Integer page = 1, limit = 5;

    /**
     * 用户登陆
     *
     * @param phone
     * @param password
     * @return
     */
    @RequestMapping("/dtUsers/loginDtUsers")
    public DtUsersLoginResponse loginDtUsers(String phone, String password) {

        return dtUsersService.loginDtUsers(phone, password);
    }

    /**
     * 用户退出登录
     *
     * @return
     */
    @RequestMapping("/dtUsers/exitDtUsers")
    public BaseResponse<Boolean> exitDtUsers() {
        dtUsersService.exitDtUsers();
        return BaseResponse.success(Boolean.TRUE);
    }

    /**
     * 根据姓名或手机号、用户状态搜索用户
     *
     * @param dtUsersReq
     * @return 角色列表
     */
    @RequestMapping("/dtUsers/findDtUsers")
    public DtUsersResponse findDtUsers(@Valid DtUsersReq dtUsersReq) {
        return dtUsersService.findDtUsers(dtUsersReq);
    }


    /**
     * 禁用或者删除用户
     *
     * @param dtUsersReq
     */
    @RequestMapping("/dtUsers/delOrDisDtUsers")
    public BaseResponse<Boolean> delOrDisDtUsers(DtUsersReq dtUsersReq) {
        return dtUsersService.delOrDisDtUsers(dtUsersReq);
    }

    /**
     * 修改用户密码
     *
     * @param password
     */
    @RequestMapping("/dtUsers/updatePassword")
    public BaseResponse<Boolean> updatePassword(String password, Integer id) {
        return dtUsersService.updatePassword(password, id);
    }

    /**
     * 新增后台用户
     *
     * @param dtUsersAddReq
     */
    @RequestMapping("/dtUsers/addDtUsers")
    public BaseResponse<Boolean> addDtUsers(@Valid DtUsersAddReq dtUsersAddReq) {
        return dtUsersService.addDtUsers(dtUsersAddReq);
    }

    /**
     * 修改后台用户信息
     *
     * @param dtUsersUpdateReq
     */
    @RequestMapping("/dtUsers/updateDtUsers")
    public BaseResponse<Boolean> updateDtUsers(@Valid DtUsersUpdateReq dtUsersUpdateReq) {
        return dtUsersService.updateDtUsers(dtUsersUpdateReq);
    }

    /**
     * 修改时回显的数据
     *
     * @param id 用户id
     * @return
     */
    @RequestMapping("/dtUsers/findDtUsersById")
    public BaseResponse<DtUsersSelectVo> findDtUsersById(Integer id) {
        return dtUsersService.findDtUsersById(id);
    }

    /**
     * 查询出各种类型的人数
     *
     * @return
     */
    @RequestMapping("/dtUsers/findSize")
    public BaseResponse<DtUsersNumberVo> findSize() {
        return dtUsersService.findSize();
    }

    /**
     * 登录日志
     *
     * @return
     */
    @RequestMapping("/dtUsers/findDtUsersLoginLog")
    public BaseResponse<List<DtUsersLogVo>> findDtUsersLoginLog(LoginLogReq loginLogReq) {

        return dtUsersService.findDtUsersLoginLog(loginLogReq);
    }

    /**
     * 首页的平台日志
     *
     * @return
     */
    @RequestMapping("/homePage/findDtUsersPlatformLog")
    public BaseResponse<List<DtUsersPlatformLogVo>> findDtUsersPlatformLog(DtUsersPlatformReq dtUsersPlatformReq) {
        return dtUsersService.findDtUsersPlatformLog(dtUsersPlatformReq);
    }

    /**
     * 用户修改自己的密码
     *
     * @param updatePasswordByLoginUserReq
     */
    @RequestMapping("/dtUsers/updatePasswordByLoginUser")
    public BaseResponse<Boolean> updatePasswordByLoginUser(UpdatePasswordByLoginUserReq updatePasswordByLoginUserReq) {
        return dtUsersService.updatePasswordByLoginUser(updatePasswordByLoginUserReq);
    }

    /**
     * 修改个人信息里的头像以及用户名
     *
     * @param updateInfoByLoginUserReq
     */
    @RequestMapping("/dtUsers/updateInfoByLoginUser")
    public BaseResponse<Boolean> updateInfoByLoginUser(@Valid UpdateInfoByLoginUserReq updateInfoByLoginUserReq) {
        return dtUsersService.updateInfoByLoginUser(updateInfoByLoginUserReq);
    }

    /**
     * 查询个人信息(头像以及用户名)
     *
     * @return
     */
    @RequestMapping("/dtUsers/findInfoByLoginUser")
    public BaseResponse<DtUsers> findInfoByLoginUser() {
        return dtUsersService.findInfoByLoginUser();
    }

    /**
     * 根据用户id解除绑定微信
     *
     * @param id 用户id
     */
    @RequestMapping("/dtUsers/unbindWeChat")
    public BaseResponse<Boolean> unbindWeChat(Integer id) {
        return dtUsersService.unbindWeChat(id);
    }


}